﻿namespace CkSoftware.GroupMe.Sdk.Core.Dao
{
	/// <summary>
	/// Enumeration of all available GroupMe API response codes.
	/// </summary>
	public enum GroupMeApiResultCode
	{
		/// <summary>
		/// Request was accepted and executed correctly.
		/// </summary>
		Ok = 200,

		/// <summary>
		/// Indicates that an entity was successfully created.
		/// </summary>
		Created = 201,

		/// <summary>
		/// Indicates that a request was successfully accepted.
		/// </summary>
		Accepted = 202,

		/// <summary>
		/// Indicates that the request was accepted and executed correctly, but no content was returned from the API.
		/// </summary>
		NoContent = 204,

		/// <summary>
		/// Indicates that a collection or an entity was not modified. Occurs currently at the message and direct-message index
		/// commands.
		/// </summary>
		NotModified = 304,

		/// <summary>
		/// Indicates an error with the given parameters.
		/// </summary>
		BadRequest = 400,

		/// <summary>
		/// Indicates a wrong / expired auth-token or any other unathorized situation.
		/// </summary>
		Unauthorized = 401,

		/// <summary>
		/// Indicates a forbidden action. Currently occurs at creating new direct messages if the user is sending too much
		/// messages.
		/// </summary>
		Forbidden = 403,

		/// <summary>
		/// Indicates that the requested resource was not found. Currently occurs in async processing when the result is already
		/// deleted from the server.
		/// </summary>
		NotFound = 404,

		/// <summary>
		/// Indicates that a rate-limit was reached. Currently not occuring anywhere (as not declared in GroupMe API
		/// documentation).
		/// </summary>
		EnhanceYourCalm = 420,

		/// <summary>
		/// States an internal server error, mostly occuring if there's something wrong with the GroupMe API service.
		/// </summary>
		InternalServerError = 500,

		/// <summary>
		/// Indicates that there is an error reaching the API. Perhaps they're updating their servers.
		/// </summary>
		BadGateway = 502,

		/// <summary>
		/// Indicates that the requested service is not available currently, just try it again later. Currently occurs in async
		/// processing when the result is not yet ready.
		/// </summary>
		ServiceUnavailable = 503
	}
}